package com.hq.demo11;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Directory extends Entry {

    // 文件夹的名字
    private String name;
    // 文件夹中目录条目的集合
    private List<Entry> directory = new ArrayList<Entry>();

    // 构造函数
    public Directory(String name) {
        this.name = name;
    }

    // 获取名字
    @Override
    public String getName() {
        return name;
    }

    @Override
    public int getSize() {
        int size = 0;
        Iterator<Entry> it = directory.iterator();
        while (it.hasNext()) {
            size += it.next().getSize(); // 递归
        }
        return size;
    }

    // 增加目录条目
    @Override
    public Entry add(Entry entry) {
        directory.add(entry);
        // 加入文件夹时，记录父节点
        entry.parent = this;
        return this;
    }

    @Override
    protected void printList(String prefix) {
        System.out.println(prefix + "/" + this);
        Iterator<Entry> it = directory.iterator();
        while (it.hasNext()) {
            // 递归
            it.next().printList(prefix + "/" + name);
        }
    }

}
